"""
@name : 07.新式类与经典类
@author : wenyao
@projectname: xsfh
"""
#区别：
# 1、类型区别
#    经典类  通过type查看到的实例类型都叫做instance
#           类和实例之间只能够通过__class__属性进行关联
#    新式类  通过type查看到的实例类型就是类名
#
# >>> class B: pass
# ...
# >>> b = B()
# >>> type(b)
# <type 'instance'>
# >>> b.__class__
# <class __main__.B at 0x7f24cb53ef30>
# >>>
# ----------------------------------------------------------
# >>> class A: pass
# ...
# >>> a = A()
# >>> type(a)
# <class '__main__.A'>
# >>> a.__class__
# <class '__main__.A'>
# >>>

#2、继承顺序
#经典类：  深度优先
#新式类：  广度优先的c3算法

#c3算法
# 首先将自身类加入本序列，然后对继承序列的元素依次判断。
# 若某元素不在其他序列或者它是所有继承序列的第一个，那么把这个元素提取到本序列

class A:
    def test(self):
        print("from A")

class B(A):
    def test(self):
        print("from B")

class C(A):
    def test(self):
        print("from C")

class D(B):
    def test(self):
        print("from D")

class E(C):
    def test(self):
        print("from E")

class F(D,E):
    def test(self):
        print("from F")

f = F()
f.test()